import%20marimo%0A%0A__generated_with%20%3D%20%220.17.7%22%0Aapp%20%3D%20marimo.App(%0A%20%20%20%20width%3D%22medium%22%2C%0A%20%20%20%20layout_file%3D%22layouts%2Fdemo.slides.json%22%2C%0A%20%20%20%20auto_download%3D%5B%22html%22%5D%2C%0A)%0A%0Awith%20app.setup%3A%0A%20%20%20%20%23%20Initialization%20code%20that%20runs%20before%20all%20other%20cells%0A%20%20%20%20import%20marimo_lib%20as%20molib%0A%20%20%20%20from%20plotly.subplots%20import%20make_subplots%0A%20%20%20%20import%20random%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20from%20modraw%20import%20Draw%0A%20%20%20%20from%20mohtml%20import%20img%0A%20%20%20%20from%20pathlib%20import%20Path%0A%20%20%20%20import%20base64%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20Demo%0A%0A%20%20%20%20%E3%81%93%E3%81%AE%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%92%E3%81%93%E3%81%93%E3%81%AB%E7%A4%BA%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20GLOBAL_FIG_WIDTH%3Aint%20%3D%201250%0A%20%20%20%20return%20GLOBAL_FIG_WIDTH%2C%20mo%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20html_test%20%3D%20molib.image.get_image_html(%22notebook%2Ffigs%2Flogotype-wide.png%22)%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%20%E8%87%AA%E4%BD%9C%E9%96%A2%E6%95%B0%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%60image.py%60%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%E5%9B%B3%E3%81%AE%E6%8F%8F%E7%94%BB%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E7%BE%A4%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%E6%9C%80%E7%B5%82%E7%9A%84%E3%81%AB%E3%81%AFHTML%E3%81%A7%E4%BF%9D%E5%AD%98%E3%82%92%E8%A1%8C%E3%81%84%E3%81%9F%E3%81%84%E3%81%AE%E3%81%A7%E5%9B%B3%E3%82%92%E6%8C%BF%E5%85%A5%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AF%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%80%E3%82%A6%E3%83%B3%E8%A8%98%E6%B3%95%E3%81%A7%E6%9B%B8%E3%81%8B%E3%81%9A%60base64%60%E3%81%AB%E3%81%A6HTML%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AB%E3%81%97%E3%81%A6%E5%A4%89%E6%95%B0%E3%81%AB%E6%A0%BC%E7%B4%8D%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%60mo.Html(html_test)%60%E3%81%AB%E3%81%A6%E6%8F%8F%E7%94%BB%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20mo.Html(html_test)%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.function%0Adef%20gauss(%0A%20%20%20%20x%2C%0A%20%20%20%20a%3Afloat%20%3D%201.%2C%0A%20%20%20%20mu%3Afloat%20%3D%200.%2C%0A%20%20%20%20sigma%3Afloat%20%3D%201.%0A)%3A%0A%20%20%20%20return%20a*np.exp(-(x-mu)**2%20%2F%20(2.*sigma**2))%0A%0A%0A%40app.cell%0Adef%20_(GLOBAL_FIG_WIDTH%3A%20int%2C%20mo)%3A%0A%20%20%20%20_x%20%20%3D%20np.linspace(-5%2C5%2C100)%0A%20%20%20%20_y%20%20%3D%20gauss(_x%2C%20a%3D10)%0A%20%20%20%20_el%20%3D%20_y%2F_y%0A%20%20%20%20_eu%20%3D%20_y%2F_y%0A%0A%20%20%20%20for%20_i%20in%20range(len(_el))%3A%0A%20%20%20%20%20%20%20%20_el%5B_i%5D%20%3D%20random.random()%0A%20%20%20%20%20%20%20%20_eu%5B_i%5D%20%3D%20random.random()%0A%0A%20%20%20%20x_2d%20%3D%20np.random.normal(loc%3D0%2C%20scale%3D3%2C%20size%3D1000000)%0A%20%20%20%20y_2d%20%3D%20np.random.rayleigh(scale%3D1%2C%20size%3D1000000)%0A%0A%20%20%20%20fig%20%3D%20make_subplots(rows%3D1%2C%20cols%3D2%2C%20vertical_spacing%3D0.15%2C%20horizontal_spacing%3D0.15%2C%20subplot_titles%3D(%5B%221D%20Gaussian%22%2C%222D%20Gaussian%22%5D))%0A%20%20%20%20molib.plot.add_sub_plot(fig%2C%201%2C%201%2C%20'error'%2C%20%5B_x%2C%20_y%2C%20_el%2C%20_eu%5D%2C%20%5Bf'Variable'%2C%20f'Value'%5D%2C%20dataname%3D'Data')%0A%20%20%20%20molib.plot.add_sub_plot(fig%2C%201%2C%202%2C%20'2d'%2C%20%5Bx_2d%2C%20y_2d%5D%2C%20%5B'X'%2C%20'Y'%5D%2C%20%5B200%2C%20200%5D%2C%20None%2C%20colormap%3D'Turbo')%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%60plot.py%60%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20plotly%E3%81%AE%E6%8F%8F%E7%94%BB%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E7%BE%A4%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%60plotly.graph_objects.Figure%60%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E9%83%A8%E5%88%86%E3%81%AF%60plotly%60%E3%81%AE%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%AE%A3%E8%A8%80%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%E5%90%84%E3%80%85%E3%81%AEsub%20plot%E3%81%AB%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AF%60plot.add_sub_plot%60%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%97%E3%81%A6%E3%81%84%E3%81%8F%E3%81%93%E3%81%A8%E3%81%A7%E6%8F%8F%E7%94%BB%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20fig.update_layout(height%3D500%2C%20width%3DGLOBAL_FIG_WIDTH%2C%20showlegend%3DFalse%2C%20title_text%3D%22%22)%0A%20%20%20%20%5D)%0A%20%20%20%20return%20fig%2C%20x_2d%2C%20y_2d%0A%0A%0A%40app.cell%0Adef%20_(GLOBAL_FIG_WIDTH%3A%20int%2C%20mo%2C%20x_2d%2C%20y_2d)%3A%0A%20%20%20%20_data_x%20%3D%20molib.plot.get_slice_array(%5Bx_2d%2C%20y_2d%5D%2C%20%5B200%2C%20200%5D%2C%20slice_axis%3D'x'%2C%20bin_span%3D50)%0A%20%20%20%20_data_y%20%3D%20molib.plot.get_slice_array(%5Bx_2d%2C%20y_2d%5D%2C%20%5B200%2C%20200%5D%2C%20slice_axis%3D'y'%2C%20bin_span%3D50)%0A%0A%20%20%20%20_fig%20%3D%20make_subplots(%0A%20%20%20%20%20%20%20%20rows%3D1%2C%20cols%3D2%2C%20vertical_spacing%3D0.15%2C%20horizontal_spacing%3D0.15%2C%0A%20%20%20%20%20%20%20%20subplot_titles%3D(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%221D%20Rayleigh%20distribution%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%221D%20Gaussian%20distribution%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20_data%20%3D%20_data_x%0A%0A%20%20%20%20for%20_i%20in%20range(len(_data))%3A%0A%20%20%20%20%20%20%20%20molib.plot.add_sub_plot(%0A%20%20%20%20%20%20%20%20%20%20%20%20_fig%2C%201%2C%201%2C%20'plot'%2C%20%5B_data%5B_i%5D%5B'centers'%5D%2C%20_data%5B_i%5D%5B'counts'%5D%5D%2C%20%5Bf'Variable'%2C%20f'Value'%5D%2C%20logsf%3D'000'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dataname%3Df'%7B_data%5B_i%5D%5B%22axis%22%5D%7D-slice(%7B_data%5B_i%5D%5B%22bin_index%22%5D%7D%3A%7B_data%5B_i%5D%5B%22bin_index%22%5D%2B_data%5B_i%5D%5B%22bin_span%22%5D%7D)'%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20_data%20%3D%20_data_y%0A%0A%20%20%20%20for%20_i%20in%20range(len(_data))%3A%0A%20%20%20%20%20%20%20%20molib.plot.add_sub_plot(%0A%20%20%20%20%20%20%20%20%20%20%20%20_fig%2C%201%2C%202%2C%20'plot'%2C%20%5B_data%5B_i%5D%5B'centers'%5D%2C%20_data%5B_i%5D%5B'counts'%5D%5D%2C%20%5Bf'Variable'%2C%20f'Value'%5D%2C%20logsf%3D'000'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dataname%3Df'%7B_data%5B_i%5D%5B%22axis%22%5D%7D-slice(%7B_data%5B_i%5D%5B%22bin_index%22%5D%7D%3A%7B_data%5B_i%5D%5B%22bin_index%22%5D%2B_data%5B_i%5D%5B%22bin_span%22%5D%7D)'%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%23%20%E4%BA%8C%E6%AC%A1%E5%85%83%E3%83%92%E3%82%B9%E3%83%88%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%60plot.get_slice_array%60%E3%81%AB%E3%81%A6%E5%AE%9F%E8%A1%8C%E5%8F%AF%E8%83%BD%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60slice_axis%60%2C%20%60bin_span%60%E3%81%A7%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9%E6%96%B9%E5%90%91%E3%81%A8Rebin%E3%81%AE%E6%95%B0%E3%82%92%E8%AA%BF%E6%95%B4%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60histo_skip%60%E3%81%A7%60numpy.histogram2d(...)%60%E3%82%92%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97%E3%81%99%E3%82%8B%E3%81%8B%E3%82%92%E9%81%B8%E6%8A%9E%E5%8F%AF%E8%83%BD%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20_fig.update_layout(height%3D500%2C%20width%3DGLOBAL_FIG_WIDTH%2C%20showlegend%3DTrue%2C%20title_text%3D%22Slice%20data%22)%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(GLOBAL_FIG_WIDTH%3A%20int%2C%20fig%2C%20mo)%3A%0A%20%20%20%20_output_path%20%3D%20molib.plot.save_fig_as_html(fig%2C%20'notebook%2Ffigs%2Fplot.html')%0A%20%20%20%20_output_html%20%3D%20molib.plot.load_html_as_str(_output_path)%0A%20%20%20%20_output_data%20%3D%20molib.plot.get_plotly_values_json(_output_html)%0A%20%20%20%20_output_valu%20%3D%20molib.plot.decode_typed_arrays(_output_data%5B0%5D%5B0%5D)%0A%0A%20%20%20%20_fig%20%3D%20make_subplots(rows%3D1%2C%20cols%3D1%2C%20vertical_spacing%3D0.15%2C%20horizontal_spacing%3D0.15%2C%20subplot_titles%3D(%5B%22Data%20extracted%20from%20HTML%22%5D))%0A%20%20%20%20molib.plot.add_sub_plot(%0A%20%20%20%20%20%20%20%20_fig%2C%201%2C%201%2C%20'error'%2C%20%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20_output_valu%5B'x'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_output_valu%5B'y'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_output_valu%5B'error_y'%5D%5B'array'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_output_valu%5B'error_y'%5D%5B'arrayminus'%5D%20%20%0A%20%20%20%20%20%20%20%20%5D%2C%20%0A%20%20%20%20%20%20%20%20%5Bf'Variable'%2C%20f'Value'%5D%2C%20dataname%3D'Data'%0A%20%20%20%20)%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%23%20HTML%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BF%9D%E5%AD%98%E3%83%BB%E6%8A%BD%E5%87%BA%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60plot.save_fig_as_html%60%E3%81%AB%E3%81%A6%E4%BF%9D%E5%AD%98%E5%8F%AF%E8%83%BD%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20%E7%AC%AC%E4%B8%80%E5%BC%95%E6%95%B0%E3%81%AB%60plotly.graph_objects.Figure%60%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%80%81%E7%AC%AC%E4%BA%8C%E5%BC%95%E6%95%B0%E3%81%AB%E3%83%91%E3%82%B9%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E4%BF%9D%E5%AD%98%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20%E6%88%BB%E3%82%8A%E5%80%A4%E3%81%A8%E3%81%97%E3%81%A6%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%91%E3%82%B9%E3%81%8C%E8%BF%94%E3%81%A3%E3%81%A6%E3%81%8F%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60plot.load_html_as_str%60%E3%81%A7%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%9FHTML%E3%82%92String%E5%9E%8B%E3%81%A8%E3%81%97%E3%81%A6%E5%8F%96%E5%BE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60plot.get_plotly_values_json%60%E3%81%8A%E3%82%88%E3%81%B3%60plot.decode_typed_arrays%60%E3%81%AB%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20HTML%E4%BF%9D%E5%AD%98%E6%99%82%E3%81%AE%E4%BF%9D%E5%AD%98%E5%BD%A2%E5%BC%8F%E3%81%8C%E9%81%B8%E6%8A%9E%E4%B8%8D%E5%8F%AF%3A%20%E6%95%B0%E5%80%A4%E3%81%8C%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%60plot.get_plotly_values_json%60%E3%81%AE%E3%81%BF%E3%81%A7%E3%82%88%E3%81%84%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20%E3%81%9D%E3%81%86%E3%81%A7%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF%60plot.get_plotly_values_json%60%E3%81%A7%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E8%BE%9E%E6%9B%B8%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%BF%E3%83%97%E3%83%AB%E3%82%92%E5%BC%95%E6%95%B0%E3%81%AB%60plot.decode_typed_arrays%60%E3%81%AB%E6%B8%A1%E3%81%99%E3%80%82%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20mo.md(%22%E2%86%92%22%20%2B%20%22%20%22%20%2B%20%22x%5B0%3A5%5D%3A%22%20%2B%20%22%20%22%20%2B%20str(molib.plot.decode_typed_arrays(_output_valu%5B'x'%5D)%5B0%3A5%5D))%2C%0A%20%20%20%20%20%20%20%20mo.md(%22%E2%86%92%22%20%2B%20%22%20%22%20%2B%20%22y%5B0%3A5%5D%3A%22%20%2B%20%22%20%22%20%2B%20str(molib.plot.decode_typed_arrays(_output_valu%5B'y'%5D)%5B0%3A5%5D))%2C%0A%20%20%20%20%20%20%20%20_fig.update_layout(height%3D300%2C%20width%3DGLOBAL_FIG_WIDTH%2C%20showlegend%3DFalse%2C%20title_text%3D%22%22)%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20schedule%20%3D%20molib.schedule.add_periodic_task(%0A%20%20%20%20%20%20%20%20data%3DNone%2C%0A%20%20%20%20%20%20%20%20task%3D%22%E6%9C%9D%E4%BC%9A%22%2C%0A%20%20%20%20%20%20%20%20start%3D%222025-10-01%2009%3A00%22%2C%0A%20%20%20%20%20%20%20%20end%3D%222025-10-03%2009%3A00%22%2C%0A%20%20%20%20%20%20%20%20resource%3D%22TeamA%22%2C%0A%20%20%20%20%20%20%20%20name%3D%22%E3%83%87%E3%82%A4%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89%E3%82%A2%E3%83%83%E3%83%97%22%2C%0A%20%20%20%20%20%20%20%20repeat_until%3D%222025-11-30%2023%3A59%22%2C%0A%20%20%20%20%20%20%20%20every%3D15%2C%20%20%20%20%20%20%20%23%201%E6%97%A5%E3%81%94%E3%81%A8%0A%20%20%20%20%20%20%20%20unit%3D%22D%22%2C%20%20%20%20%20%20%23%20%E6%97%A5%0A%20%20%20%20%20%20%20%20seq_col%3D%22StandupNo%22%2C%0A%20%20%20%20%20%20%20%20Owner%3D%22TeamA%22%2C%20%20%23%20%E8%BF%BD%E5%8A%A0%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E4%BE%8B%0A%20%20%20%20)%0A%0A%20%20%20%20schedule%20%3D%20molib.schedule.add_periodic_task(%0A%20%20%20%20%20%20%20%20data%3Dschedule%2C%0A%20%20%20%20%20%20%20%20task%3D%22%E9%80%B2%E6%8D%97%E4%BC%9A%E8%AD%B0%22%2C%0A%20%20%20%20%20%20%20%20start%3D%222025-10-03%2014%3A00%22%2C%20%20%20%20%20%20%23%201%E5%9B%9E%E7%9B%AE%EF%BC%88%E9%87%91%E6%9B%9C%E6%97%A5%EF%BC%89%0A%20%20%20%20%20%20%20%20end%3D%222025-10-03%2018%3A00%22%2C%0A%20%20%20%20%20%20%20%20resource%3D%22Meeting%22%2C%0A%20%20%20%20%20%20%20%20name%3D%22%E9%80%B1%E6%AC%A1%E9%80%B2%E6%8D%97%E4%BC%9A%E8%AD%B0%22%2C%0A%20%20%20%20%20%20%20%20repeat_until%3D%222025-11-30%2023%3A59%22%2C%0A%20%20%20%20%20%20%20%20every%3D7%2C%20%20%20%20%20%20%20%23%207%E6%97%A5%E3%81%94%E3%81%A8%EF%BC%9D%E9%80%B11%0A%20%20%20%20%20%20%20%20unit%3D%22D%22%2C%0A%20%20%20%20%20%20%20%20seq_col%3D%22WeeklyNo%22%2C%0A%20%20%20%20%20%20%20%20Room%3D%22%E4%BC%9A%E8%AD%B0%E5%AE%A4A%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20schedule%20%3D%20molib.schedule.add_periodic_task(%0A%20%20%20%20%20%20%20%20data%3Dschedule%2C%0A%20%20%20%20%20%20%20%20task%3D%22%E7%9B%A3%E8%A6%96%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%22%2C%0A%20%20%20%20%20%20%20%20start%3D%222025-10-09%2012%3A00%22%2C%0A%20%20%20%20%20%20%20%20end%3D%222025-10-10%2012%3A00%22%2C%0A%20%20%20%20%20%20%20%20resource%3D%22Monitoring%22%2C%0A%20%20%20%20%20%20%20%20name%3D%22%E7%9B%A3%E8%A6%96%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%22%2C%0A%20%20%20%20%20%20%20%20repeat_until%3D%222025-11-30%2023%3A59%22%2C%0A%20%20%20%20%20%20%20%20every%3D14%2C%20%20%20%20%20%20%20%23%202%E6%99%82%E9%96%93%E3%81%94%E3%81%A8%0A%20%20%20%20%20%20%20%20unit%3D%22D%22%2C%20%20%20%20%20%20%23%20%E6%99%82%E9%96%93%0A%20%20%20%20%20%20%20%20seq_col%3D%22MonCheckID%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20schedule%20%3D%20molib.schedule.add_task(%0A%20%20%20%20%20%20%20%20data%3Dschedule%2C%0A%20%20%20%20%20%20%20%20Task%3D%22%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E4%BD%9C%E6%A5%AD%22%2C%0A%20%20%20%20%20%20%20%20Start%3D%222025-10-01%2020%3A00%22%2C%0A%20%20%20%20%20%20%20%20End%3D%222025-10-06%2023%3A00%22%2C%0A%20%20%20%20%20%20%20%20Resource%3D%22Release%22%2C%0A%20%20%20%20%20%20%20%20Name%3D%22v1.0%20%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%22%2C%0A%20%20%20%20%20%20%20%20Priority%3D1%2C%0A%20%20%20%20%20%20%20%20Owner%3D%22ReleaseTeam%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20schedule%20%3D%20molib.schedule.add_task(%0A%20%20%20%20%20%20%20%20data%3Dschedule%2C%0A%20%20%20%20%20%20%20%20Task%3D%22%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E4%BD%9C%E6%A5%AD%22%2C%0A%20%20%20%20%20%20%20%20Start%3D%222025-10-30%2020%3A00%22%2C%0A%20%20%20%20%20%20%20%20End%3D%222025-11-08%2023%3A00%22%2C%0A%20%20%20%20%20%20%20%20Resource%3D%22Release%22%2C%0A%20%20%20%20%20%20%20%20Name%3D%22v1.1%20%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%22%2C%0A%20%20%20%20%20%20%20%20Priority%3D1%2C%0A%20%20%20%20%20%20%20%20Owner%3D%22ReleaseTeam%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20schedule%20%3D%20molib.schedule.add_task(%0A%20%20%20%20%20%20%20%20data%3Dschedule%2C%0A%20%20%20%20%20%20%20%20Task%3D%22%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E4%BD%9C%E6%A5%AD%22%2C%0A%20%20%20%20%20%20%20%20Start%3D%222025-11-15%2020%3A00%22%2C%0A%20%20%20%20%20%20%20%20End%3D%222025-11-30%2023%3A00%22%2C%0A%20%20%20%20%20%20%20%20Resource%3D%22Release%22%2C%0A%20%20%20%20%20%20%20%20Name%3D%22v1.2%20%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%22%2C%0A%20%20%20%20%20%20%20%20Priority%3D1%2C%0A%20%20%20%20%20%20%20%20Owner%3D%22ReleaseTeam%22%2C%0A%20%20%20%20)%0A%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20%60schedule.py%60%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E8%A1%A8%E7%A4%BA%E7%94%A8%E3%81%AE%E9%96%A2%E6%95%B0%E7%BE%A4%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%60add_task%60%E3%82%84%60add_periodic_task%60%E3%81%AA%E3%81%A9%E3%81%A7%60pandas.Dataframe%60%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF%E7%BE%A4%E3%82%92%E7%94%9F%E6%88%90%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60add_periodic_task%60%E3%81%AF%60add_task%60%E3%82%92%E5%91%A8%E6%9C%9F%E7%9A%84%E3%81%AB%E5%AE%9F%E8%A1%8C%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%AA%E3%82%8B%E5%88%97%E3%81%AF%E3%81%82%E3%82%8B%E3%81%8C%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E7%8B%AC%E8%87%AA%E3%81%AE%E5%88%97%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20schedule.head(20)%0A%20%20%20%20%5D)%0A%20%20%20%20return%20(schedule%2C)%0A%0A%0A%40app.cell%0Adef%20_(GLOBAL_FIG_WIDTH%3A%20int%2C%20mo%2C%20schedule)%3A%0A%20%20%20%20values%20%3D%20schedule%5B%22Resource%22%5D.unique().tolist()%0A%0A%20%20%20%20timeline_info%20%3D%20dict(%0A%20%20%20%20%20%20%20%20x_start%3D%22Start%22%2C%0A%20%20%20%20%20%20%20%20x_end%3D%22End%22%2C%0A%20%20%20%20%20%20%20%20y%3D%22Resource%22%2C%0A%20%20%20%20%20%20%20%20color%3D%22Resource%22%2C%0A%20%20%20%20%20%20%20%20text%3D%22Name%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20fill_palette%20%3D%20molib.schedule.get_color_list('tab10'%2C0.3)%0A%20%20%20%20edge_palette%20%3D%20molib.schedule.get_color_list('tab10'%2C0.9)%0A%0A%20%20%20%20fill_map%20%3D%20dict(zip(values%2C%20fill_palette))%0A%20%20%20%20edge_map%20%3D%20dict(zip(values%2C%20edge_palette))%0A%20%20%20%20line_map%20%3D%20dict(color%3Dmolib.schedule.get_color_list('tokyo'%2C0.8)%5B0%5D%2C%20width%3D2%2C%20dash%3D%22dot%22)%0A%20%20%20%20taskname_map%20%3D%20dict(size%3D14%2C%20color%3D%22%23b0b0b0%22)%0A%20%20%20%20_fig%20%3D%20make_subplots(rows%3D1%2C%20cols%3D1%2C%20vertical_spacing%3D0.15%2C%20horizontal_spacing%3D0.15%2C%20subplot_titles%3D(%5B%22%22%5D))%0A%0A%20%20%20%20molib.schedule.add_schedule(%0A%20%20%20%20%20%20%20%20fig%20%3D%20_fig%2C%0A%20%20%20%20%20%20%20%20data%20%3D%20schedule%2C%0A%20%20%20%20%20%20%20%20timeline_info%20%3D%20timeline_info%2C%0A%20%20%20%20%20%20%20%20taskname_info%20%3D%20taskname_map%2C%0A%20%20%20%20%20%20%20%20color_discrete_map%20%3D%20fill_map%2C%0A%20%20%20%20%20%20%20%20edge_color_map%20%3D%20edge_map%2C%0A%20%20%20%20%20%20%20%20line_info%20%3Dline_map%2C%0A%20%20%20%20%20%20%20%20irow%20%3D%201%2C%0A%20%20%20%20%20%20%20%20icol%20%3D%201%0A%20%20%20%20)%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%23%20%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%AE%E4%B8%80%E4%BE%8B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60plotly%60%E3%81%AB%E3%81%AF%E3%82%AC%E3%83%B3%E3%83%88%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E7%94%A8%E9%96%A2%E6%95%B0%E3%81%AF%E4%BD%BF%E3%81%84%E3%81%AB%E3%81%8F%E3%81%84%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20%60plotly.express.timeline()%60%E3%81%A7%60Figure%60%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E7%94%9F%E6%88%90%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20%60add_trace()%60%E3%81%A7%E8%BF%BD%E5%8A%A0%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%E3%80%80%60marimo_lib.plot%60%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%A7%E3%82%88%E3%81%8F%E4%BD%BF%E3%82%8F%E3%82%8C%E3%82%8B%60plotly.graph_objects.Figure%60%E3%81%AB%E5%AF%BE%E5%BF%9C%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60timeline_info%60%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%84%E3%82%AC%E3%83%B3%E3%83%88%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AA%E3%81%A9%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%60fill_map%60%2C%20%60edge_map%60%2C%20%60line_map%60%2C%20%60taskname_map%60%E3%81%AA%E3%81%A9%E3%81%A7%E8%B2%A0%E8%8D%B7%E6%83%85%E5%A0%B1%E3%82%92%E4%BB%98%E4%B8%8E%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20_fig.update_layout(height%3D600%2C%20width%3DGLOBAL_FIG_WIDTH%2C%20showlegend%3DFalse%2C%20title_text%3D%22Carender%22)%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20widget%20%3D%20mo.ui.anywidget(Draw(width%3D600%2C%20height%3D400))%0A%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20Draw.io%20like%E3%81%AA%E3%81%8A%E7%B5%B5%E6%8F%8F%E3%81%8D%E3%83%84%E3%83%BC%E3%83%AB%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E3%82%84%E8%AD%B0%E4%BA%8B%E9%8C%B2%E7%94%A8%E3%83%8E%E3%83%BC%E3%83%88%E3%81%A8%E3%81%97%E3%81%A6GUI%E4%B8%8A%E3%81%A7%E5%9B%B3%E5%BD%A2%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%97%E3%81%9F%E3%82%8A%E3%80%81%E6%96%87%E5%AD%97%E6%9B%B8%E3%81%84%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E9%87%8D%E8%A6%81%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20Draw.io%E3%81%8C%E3%81%82%E3%82%8B%E3%81%A8%E8%89%AF%E3%81%84%E3%81%8C%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20OSS%E3%81%A7%E3%81%8B%E3%81%A4%60marimo%60%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%AE%E3%81%AF%60modarw%60%E3%81%AE%E3%81%BF%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20widget%0A%20%20%20%20%5D)%0A%20%20%20%20return%20(widget%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20widget)%3A%0A%20%20%20%20mo.hstack(%5B%0A%20%20%20%20%20%20%20%20img(src%3Dwidget.value%5B%22base64%22%5D)%2C%20%20%23%20Use%20base64%20representation%20directly%20with%20mohtml%0A%20%20%20%20%20%20%20%20widget.get_pil()%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Retreive%20the%20Python%20PIL%20object%20instead%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20widget.value%5B%22base64%22%5D%20%3D%20'data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAokAAAG5CAYAAADiRa4RAAAACXBIWXMAABYiAAAWIgEbFoKPAAAQAElEQVR4AezdW3ITR8MGYInvPhQr%2Bs11soZQrISwkhSsgVzDjlJwH%2BvXO8GOMZI95%2BmeflJMbEs9fXhall5Pz0gvDv4jQIAAAQIECBAg8EhASHwE4kcCBAjUL2AEBAgQmC4gJE43VAMBAgQIECBAYHcCQmJhU6o7BAgQIECAAIESBITEEmZBHwgQIEBgzwLGRqBKASGxymnTaQIECBAgQIDAsgJC4rK%2Baq9dQP8JECBAgECjAkJioxNv2AQIECBAoFUB4%2B4nICT2c1KKAAECBAgQINCUgJDY1HQbLIHaBfSfAAECBNYSEBLXktYOAQIECBAgQKAigdVCYkUmukqAAAECBAgQaF5ASGz%2BIQCAAAECowXsSIDAjgWExB1PrqERIECAAAECBMYKCIlj5WrfT%2F8JECBAgAABAk8ICIlP4LiLAAECBAjUJKCvBOYUEBLn1FQXAQIECBAgQGAnAkLiTibSMGoX0H8CBAgQIFCWgJBY1nzoDQECBAgQILAXgcrHISRWPoG6T4AAAQIECBBYQkBIXEJVnQQI1C6g%2FwQIEGheQEhs%2FiEAgAABAgQIECDws8D%2BQuLPY3QLAQIECBAgQIDAQAEhcSCY4gQIECCwvoAWCRBYX0BIXN9ciwQIECBAgACB4gWExOKnqPYO6j8BAgQIECBQo4CQWOOs6TMBAgQIENhSQNtNCAiJTUyzQRIgQIAAAQIEhgkIicO8lCZQu4D%2BEyBAgACBXgJCYi8mhQgQIECAAAECpQos0y8hcRlXtRIgQIAAAQIEqhYQEquePp0nQKB2Af0nQIBAqQJCYqkzo18ECBAgQIAAgQ0FhMTR%2BHYkQIAAAQIECOxXQEjc79waGQECBAgMFVCeAIF7ASHxnsI3BAgQIECAAAECdwJC4p2Er7UL6D8BAgQIECAwo4CQOCOmqggQIECAAIE5BdS1pYCQuKW%2BtgkQIECAAAEChQoIiYVOjG4RqF1A%2FwkQIECgbgEhse7503sCBAgQIECAwCICF0LiIu2olAABAgQIECBAoCIBIbGiydJVAgQIjBawIwECBAYKCIkDwRQnQIAAAQIECLQgICSWP8t6SIAAAQIECBBYXUBIXJ1cgwQIECBAgACB8gWExPLnSA8JECBAgAABAqsLCImrk2uwdgH9J0CAAAECLQgIiS3MsjESIECAAAECTwm474KAkHgBxU0ECBAgQIAAgdYFhMTWHwHGT6B2Af0nQIAAgUUEhMRFWFVKgAABAgQIEKhbYMuQWLec3hMgQIAAAQIEdiwgJO54cg2NAAEC6wtokQCBvQgIiXuZSeMgQIAAAQIECMwoICTOiFl7VfpPgAABAgQIELgTEBLvJHwlQIAAAQL7EzAiAqMFhMTRdHYkQIAAAQIECOxXQEjc79waWe0C%2Bt%2BswG9%2F%2Fn3z68dvn3%2F98PV0t%2F324esfzYIYOAECmwgIiZuwa5QAAQKXBRIOTy9efD6cTjcPS5wOh3cJjAmQD2%2F3PQECdQnU1FshsabZ0lcCBHYtkID4OBw%2BHvDpf%2F979%2Fg2PxMgQGAJASFxCVV1EiCwQ4Flh9QtJz86enixxXMZRxMvyriRAIGZBYTEmUFVR4AAgaECCYhZTu67n6OJfaWUI0BgikATIXEKkH0JECCwtMCQgNj15Xw0sfvqfwQIEFhQQEhcEFfVBAgQeE4gRxGfK%2BP%2BiwJuJEBgYQEhcWFg1RMgQOCaQALi4KOI58qOh8P78xf%2FCBAgsKiAkLgor8ovCriRAIFOYExA7Hb0PwIECKwgICSugKwJAgQIPBbIUcTHt%2FX6%2BXj88unNS2%2Bs3QtLoTUFtLU%2FASFxf3NqRAQIFC6QgDj2KOJfv%2F%2FyuvDh6R4BAjsREBJ3MpGGQWC8gD3XFhgbEJ2LuPZMaY9A2wJCYtvzb%2FQECKwskKOIY5pMQLTMPEbOPgQaFZhh2ELiDIiqIECAQB%2BBBMQxRxEFxD66yhAgMLeAkDi3qPoIECBwQSAfpdczIP64twtVfvTwEwECqwkIiatRa4gAgZYFxn6U3vGff7wnYssPHGMnsKGAkDgnvroIECBwQSDLzIcRH6XXLTO%2FffXlQpVuIkCAwOICQuLixBogQKBlgQTEMcvMXUD0fohFPHR0gkCrAkJiqzNv3AQIrCIgIK7CrBECBBYQEBIXQFVlKQL6QWBbgV8%2Ffvs8pgfe6maMmn0IEJhbQEicW1R9BAgQOAtkmXnUeYi3tz5R5eznH4GrAu5YTUBIXI1aQwQItCKQgDh6mdmFKq08TIyTQPECQmLxU6SDBHYj0MxARgdEF6o08xgxUAI1CAiJNcySPhIgUI3AmPMQXclczfTqKIGmBPqFxKZIDJYAAQLjBLLMPPg8RJ%2BoMg7bXgQILC4gJC5OrAECBFoQSEActcy84SeqtDAvxkiAwHgBIXG8nT0JECDQCfz25983owLi4fD%2BkwtVOkP%2FI0CgPAEhsbw56dEjRQgQKEng9OLF4PdDdB5iSTOoLwQIXBIQEi%2BpuI0AAQI9BbLM3LPofTEB8Z7CNw8FfE%2BgMAEhsbAJ0R0CBOoRSEAcvMzsQpV6JlhPCTQuICQ2%2FgAw%2FFkEVNKgwKiAeHb66%2FdffKLK2cE%2FAgTKFxASy58jPSRAoECBwUcQz2M4%2Bsi9s4J%2FBGoR0E8h0WOAAAECAwVGv2G2K5kHSitOgMCWAkLilvraJkBgEYElK80y89A3zHahypIzom4CBJYSEBKXklUvAQK7E0hAHLrMLCDu7mFgQASaESgsJDbjbqAECFQmMOoNs13JXNks6y4BAg8Fmg2JecLPeUXd9uHr6dfH28dvn3PUoNv%2B%2FPvmIZrvCRBoT2DMG2a7kvn748QXAgSqFGguJCb0JRB2T%2Fin083Vc4vO950Oh3fd9uLF5%2ByTQJn9s1U52zpNgMAogfzuD93RlcxDxZQnQKA0gaZCYsJdQt%2FoSXgQHH8Ijfs90jiayo4E9iKQ543D%2BXd%2FyHi68xBdyTyETFkCBAoUaCokTgqIlybv%2FMKROnNUMqExLybZLhV1GwEC9Qnk9zm%2F40N63gXENy%2F%2FGLKPsgTWFdAagX4CzYTEPNn3IxlfKi8m2e4DoyOM4zHtSWBjgTxn5Pd5SDcExCFayhIgULpAMyHxdDz%2B35qTkReX7gjj9wtg1mxbW%2FsVMLL1BPI7PKg1VzIP4lKYAIHyBZoJiUPPKZpt6r4vSd8fXfzw1TLUbLgqIrCMwJgLVVzJvMxcqJVAAwLFDrGdkHj%2BK3%2FrWciRiWx3gXHr%2FmifAIGfBbLMPPSPSlcy%2F%2BzoFgIE6hdoJiQe%2F%2FnnfUnT9TAs5j0bS%2BqbvhBoVSABMb%2Bbvcd%2FLtidh%2BhK5rOEfwQI7E2gmZD4KU%2FiBRxNfPwAygtSzl3Mi1O2x%2Ff7mQCBdQTy%2B5ffxyGtdQHRlcxDyJQlQKAigWZCYubkwdHE%2FFjUlhenbJaii5oWnWlEIEfz8%2Fs3ZLgC4hAtZQkQqFGgqZCYo4l%2FvXl5zJP7T5OVo4znLfc93A7n234qu%2FANebESFhdGVj2BBwI5mv%2Fgx2e%2FzXPEJ0cQn3Vav4AWCRCYU6CpkHgHlyf3hMUftt9%2FeZ2rE3Pfwy233ZU73t6%2BzotDtru6lvz6MCxmKWzJttRNoFWBwVcyn%2F9wzHNEq17GTYBAOwJNhsSx05sjkXlxyHYfHA%2BH90uHxoTFbAmK2cb2v%2BT99I3AFgLd79PpdDOk7fzhOKS8sgQIEKhVQEicOHMJjNkSGhMWs02s8urup8PhXTZL0VeJ3EGgt0ACYn6feu9wLpjVhPMX%2FwgQ6CegVOUCQuKME5iwmG2twCgszjh5qmpKYFRAPBzeZzWhKSiDJUCgaQEhcaHpT1jMdhcYF2rmkCMhwuJSug3Xu%2BOhu5J5x5NraAQIzCogJM7Kebmyh2FxqeVoYfGyvVsJPBZwJfNjET8TINCKwNBxColDxSaUT1jMtuTRRWFxwgTZdfcCQ69kzh91%2BZ3dPYwBEiBA4IKAkHgBZY2b8sJzFxbzQjR3m8Li3KLqq10g5yEehlzJXNRb3dSur%2F8ECNQoICRuPGsJi9nuAuPc3REW5xZVX40CCYj5XRjSd291M0RLWQIE9iggJC48q0OqfxgW5z66mBdIF7gMmQ1l9yIwJiB6q5u9zL5xECAwRUBInKK30L4Ji9nyQiUsLoSs2iYERgVEb3XTxGNj4iDtTqAJASGx4GnOe7IlLC6xFO3IYsETr2uzCHirm1kYVUKAQMMCQmIlky8szjRRqmlGwFvdNDPVBkqAwEICQuJCsEtV%2BzAszrkU7cjiUjOm3i0EvNXNFuraJLCdgJaXERASl3FdvNaExWwJitnmalBYnEtSPVsJ5DzEIW91k9%2Bf%2FC5t1V%2FtEiBAoFQBIbHUmenZr7y4ZcsLXbaeuz1bTFh8lkiBWQTmrSQBMY%2Fd3rV6L8TeVAoSINCegJC4kzlPUMw290UuecHN0l1efHdCZRg7FchjNI%2FX3sM7B0TvhdhbS0ECBBoUGB0SG7SqZsizh8XT6SYvvnkRzlYNhI42I5DHZR6jQwZ8%2FOef90PKK0uAAIHWBITEHc%2F43GExL8LZ8oK8YzZDq0wgj8c8Lod0O%2B9BmreYGrJPI2UNkwABAvcCQuI9xX6%2FWSIs%2BvSW%2FT5eahrZ6PdCfPvqS03j1FcCBAhsISAkbqG%2BRJs96hQWeyApUpWA90Ksarp0lgCBygSExMombI7uCotzKKpja4FcUDWkD7n6P4%2F9IfsoS2BrAe0T2FJASNxSf%2BO284I559XQOS%2FMMvTGk9pI811APJ1u%2Bg5XQOwrpRwBAgT%2BExAS%2F7No9jthcYmpV%2BdSArlQxZtlL6WrXgIECPwnICT%2BZ9H8d8Ji8w%2BB4gESEE%2BHw7u%2BHXUEsa%2BUcgQI9BJorJCQ2NiE9xnuEmExL%2B7Z%2BrSvDIFLAnn8DAmIh%2BPxSx7Ll%2BpyGwECBAg8LyAkPm%2FUbIm8wM51zmJe3LPlhb5ZUAMfLZDHTR4%2FvSs4B8RHn6bSe1cFCRAgQOBfASHxXwf%2Ff0IgYTFvPpyluyeK9borL%2FQubulFpdB3gTHvhSggfsfzhQABAhMEyg%2BJEwZn1%2FkE8ukUXVg8HN4Li%2FO5qulpgS4gvnjx%2BelSP96bP2h%2BvMVPBAgQIDBGQEgco9bwPgmK2RIUs02lcGRxquC%2B9x%2F8Ztm3t6%2FzB82%2BVfYxOqMgQKB8ASGx%2FDkqsocJitnmCIoZYBcWP377nHPP8rONQPdeiAMY8lgUEAeAKUqAAIFnBITEZ4Dc%2FVjgx58TFOe6uCXvfZewmKCYZcYfW%2FJTSwJdQPRm2S1NubESIFCggJBY4KTU2KU5w2KCYpYZExZrtNDnaQLdvAuI0xDtTWCogPIELggIiRdQ3DReYO6w6Ero8XNR454JiPkjoW%2FfuyXmNy%2F%2F6FteOQIECBDoLyAk9rdScoCAsDgAa1rR3ewtIO5mKg2EAIGdCAiJO5nIUochLJY6M2X1S0Asaz70hgCBrQXKaF9ILGMedt%2BLsj2PzgAAEABJREFUucNiQoWLW%2FbxsMlcDlliPhx93N4%2BZt4oCBAoXUBILH2Gdta%2FhMWcR5ZtytASKlzcMkWwjH3HBMTSP02lDFm9IECAwHQBIXG6oRoGCiQoZuuC4vmo0MDdfyiesOjilh9IqvlBQKxmqnSUAIFGBYTE%2B4n3zdoCCYo5KtSFxYmNC4sTAVfePacKZM56N3v%2BYyKPld7lFSRAgACByQJC4mRCFUwV6MLim5fH2cKiT26ZOiWL7t8FxIGfxywgLjol%2B67c6AgQGC0gJI6ms%2BPcArOFxdPpJkepspw5dx%2FVN01gTEA83t6%2BntaqvQkQIEBgjICQOEbNPosKfA%2BLk48sJig6X3HRqRpceS42GrJTAuKnt6%2B%2BDNlHWQIECBCYR0BInMdRLQsICIsLoG5YZfd5zAPaFxAHYClKoBoBHa1JQEisabYa7WvCYs5XzDaFwJHFKXrT9u0C4ul007cWAbGvlHIECBBYTkBIXM5WzTMKJChmmxoU06XT4fAu5yvm%2FLj8bOsnMLaUgDhWzn4ECBDYVkBI3NZf6wMFEhT%2FmuFK6ATFnB%2BXsDiwC4oPEOh8hxxBPBzeOwdxALCiBAgQmCbw5N5C4pM87ixVYM6w6OKWZWY5ATFhvG%2FtOUqcee1bXjkCBAgQWFZASFzWV%2B0LCyRUzHVkUVicb7IExPksr9bkDgIECCwsICQuDKz6dQQSFnMkKtuUFnPkKwHH%2BYrjFeMXx741ZM4yf33LK0eAAAEC6wgIies4P2zF9wsJJGhkS%2BiY0kQCjvMVxwkKiOPc7EWAAIESBYTEEmdFnyYJJChagp5EOGpnAXEUm512I2AgBPYnICTub06N6LuAsPgdYoUvAuIKyJogQIDAygJC4srgmltf4Lmw2LdHWYZOGOpbvpVyMYlN3%2FHmdIDMSd%2FyyhEgQIDANgJC4jbuWt1AIMEkASXb2OYThlwF%2FZ%2BegPifhe8IEChKQGdmEBASZ0BURT0CCYrZpgTFjFZYPBwExDwSbAQIENivgJC437k1sicEEhRd3PIE0DN3LRoQn2nb3QQIECCwjoCQuI6zVgoVmDMsJjgVOsxZu5Vx5khq30pz1DbOfcsrR4AAAQJlCMwZEssYkV4QGCGQEHO8vX2dQDNi926XBKe9n68oIHZT7X8ECBBoQkBIbGKaDbKPwKe3r750YfFweN%2Bn%2FLUyew2LAuK1Gd%2F77cZHgECrAkJiqzNv3FcFEhTnOl8xwWoPH%2FGXcST8XkV7dEeOyMbx0c1%2BJECAAIGKBITEiiZraFeVnyaQkDM1LCZY1f4RfwLitMeRvQkQIFCrgJBY68zp92oCc4XFGs9XFBBXe5hpiEBfAeUIrCYgJK5GraHaBRIWs4w6ZRw5slhLWBQQp8y0fQkQIFC%2FgJBY%2FxwawYoCCYqjl6Af9DNhMSHswU1FfZu%2BpY99O5XwHJu%2B5ZUjQIAAgfIFhMTy50gPCxRIIJoaFhPCSjyqKCAW%2BIDTJQIEihXYc8eExD3PrrEtLrC3sCggLv6Q0QABAgSqERASq5kqHS1ZIGExS65T%2BpgjiwlpW71lTtpOH%2FqOIePNuPuWL6%2BcHhEgQIDAUwJC4lM67iMwQCCBaY4l6C3eMkdAHDDRihIgQKARgSpDYiNzY5iVCswVFtc6X1FArPSBptsECBBYWEBIXBhY9e0KJCzO8nnQH799TpBbQjL1WmJeQladIwTsQoBAYQJCYmETojv7Evj09tWXLiweDu9Hj%2Bx0ukmQS6AbXceFHVNf6r1w18WbnIN4kcWNBAgQ2K2AkLjbqV1xYJp6ViBBcY7zFedaghYQn50yBQgQINC8gJDY%2FEMAwJoCJYRFAXHNGdcWgXoF9JyAkOgxQGADgYTFOc5XTOAb0v2Ut8Q8RExZAgQItCsgJLY790a%2BscAc5ysm8P28BH15YALiZRe3EiBAgMBlASHxsotbCawmkKOKS5%2BvKCCuNp0aIkCAwDICG9QqJG6ArkkClwTmCosJhA%2Frz8854vjwtqe%2BdxXzUzruI0CAQDsCQmI7c22klQgkLCaoje1uAuHdErSAOFZx1v1URoAAgSoFhMQqp02n9y6QoDjHEnQCY1%2BrBNO027e8cgQIECCwbwEh8an5dR%2BBjQUS2qaGxT5DEBD7KClDgACBtgSExLbm22grFUhYTJDLNvcQUmfqn7te9REoVUC%2FCBDoJyAk9nNSisDmAgly2RLq5upM6kqdc9WnHgIECBDYj4CQuJ%2B5bGAkhhiBhLpZlqCPxy%2Bpz0aAAAECBC4JCImXVNxGoAKByWHxdLrJhS25ArqC4eoiAQJ7FTCuYgWExGKnRscIrCOQoHj3ljnrtKgVAgQIEKhBQEisYZb0kcAVgRwFTMi7cvegm1PPwLA4qH6FCRAgQKAuASGxrvnSWwL3AnMGxPtKz98kLKbu87f%2BESBAgEBzAv8NWEj8z8J3BKoRSIhLmFuqw6nbUcWldNVLgACBOgSExDrmSS8J3AsMDYjHw%2BH9%2Fc4DvxEWB4JtXFzzBAgQmFNASJxTU10EFhYYHBBvb19Pvgr6PKaExbR9%2FtY%2FAgQIEGhEQEgsYqJ1gsDzAr9%2B%2FPY5Ye35kv%2BWOCYgvn11%2F16IU8Ni2rYE%2Fa%2Bt%2FxMgQKAFASGxhVk2xuoFEhAPp9NNr4Ecj18eB8SH%2ByUsHg%2BWoB%2Ba%2BJ7AIgIqJVC5gJBY%2BQTq%2Fv4FhgbEv37%2F5fWnB0cQLwklKE791JbT4fAuS9C%2F%2Ffn3zaU23EaAAAECdQsIiXXPn94vI1BMrWMC4pDOTw2LCYqnFy8%2BJywOaVdZAgQIEChfQEgsf470sFGBpQPiQ9aExW4J%2BrxU%2FfD2vt8nLDpfsa%2BWcgQIbCOg1aECQuJQMeUJLCyQ5ds1A%2BLdcBIUs1TdhcW7Gwd%2BTVjMUcWMYeCuihMgQIBAYQJCYmETojttCyRcZfm270UqCXQJdnOqdWHxzctj6h5Tb4JixpCwOGb%2FS%2Fu4jQABAgTWFxAS1zfXIoGLAvcB8eK9P9%2BYEJdA9%2FM989ySuo%2B3t6%2FTzpgaExYtQY%2BRsw8BAgTKEFg4JJYxSL0gULpAaQHxzitXSXdh8TDtLXNyVDFjvKvXVwIECBAoX0BILH%2BO9HDnAglPWZ7tO8wc2Utw61t%2BjnJpb8pb5uSoYsaYsDhHf9SxsYDmCRBoQkBIbGKaDbJUgYSmhKe%2B%2FdsiID7s2xxh0RL0Q1HfEyBAoFwBIbHcuVmiZ%2BosSKALiIfDu75d2jogPuxnwmL68%2FC2Id%2FnyGLGn6OoQ%2FZTlgABAgTWExAS17PWEoF7gQSkBKX7G575JoEsweyZYqvenf5Ygl6VXGMErgi4mcAyAkLiMq5qJXBVYHBAvL19nUB2tcKN70jfpoZFS9AbT6LmCRAgcEFASLyA4iYCSwk8DojPtZO3oMkVxs%2BVK%2BH%2BhMUc8RzblxxZjY8l6LGC9iNAgMC8AkLivJ5qI3BVIJ%2BikiB0tcDDO47HLzUFxLuuJyhOPaqYC3kSFu%2Fq9JUAAQKVCeymu0LibqbSQEoWSEDs%2Bykqh3NAzKeo1HIE8ZL7HGHREvQlWbcRIEBgPQEhcT1rLTUqMCYg7oUqYfGYN%2BI%2BB98xY8qR1xxVXG0Jekwn7UOAAIGdCgiJO51Yw9peIMFmSEBMmMoRxO17Pm8PEhQzroxvTM0Jipagx8jZhwABAtME9hISpynYm8DMAgmICTZ9l5gToBKmZu5GUdVlfFPPV7QEXdSU6gwBAjsXEBJ3PsGGt77AfUDs2XQLAfEhRcJixpxzLx%2Fe3vf7HFnMEnTf8srVLKDvBAhsKSAkbqmv7d0JJLx0RxB7jixhKaGpZ%2FHdFMuYpy5BO6q4m4eDgRAgUKiAkFjoxNTerRb73wXESj9mb6v56sLim5fHhOUxfchRRWFxjJx9CBAg8LyAkPi8kRIEnhUYHBAL%2FxSVZwc8c4GExQTFbGOqTljMHIzZ1z4ECPQWULAxASGxsQk33PkFEk4SUvrWXOObZPcd25RyCYrZpgRFRxWnzIB9CRAg8KOAkPijh58IDBLIW9z0DojH43afojJoVNsWTlB0FfS2c6B1AgQIREBIjIKNwAiBBMS%2Bb3GTK3lzoUbNn6IygmjSLgmLOep6zJtxj6gp4T1HeUfsahcCBAhUIbB0J4XEpYXVvzuBvMXNmIC4O4gVBpRQ3YXFCUHREvQKE6UJAgR2KSAk7nJaDWopgQTE7i1uTqebPm3kKFiOIPYpq8x1gQTFfS1BXx%2BrewgQIFCKgJBYykzoR%2FECWbrsAmLPniYgJtz0LK5YD4F4Tg2LmcceTSlCgACB5gWExIEPAcXbFEiwOHkPxGImP2ExIXxMhzKPlqDHyNmHAIHWBITE1mbceAcLDA6I3gNxsPGYHRIUpx5VFBbHyO9yH4MiQOCCgJB4AcVNBO4ERgXEt6%2B%2B3O3v6%2FICc4TFzPPyPdUCAQIE6hIQEuuaL719LLDgz7mCOUuTvZrwHoi9mJYslLBoCXpJYXUTINCagJDY2owb77MCuYI5AdF7ID5LVVyBBEVL0MVNiw4RGCxghzIEhMQy5kEvChFIQOyuYPYWN4XMyLhuzBEWLUGPs7cXAQL7ERAS9zOXRjJR4D4g9qwnS5sJIz2LN1KsrGFmfjJPY3qVUw1c2DJGzj4ECOxFQEjcy0waxySBHDXqjiD2rCXBIwGkZ3HFNhTIPFmC3nACNE2AQLUC9yGx2hHoOIGJAl1AHPIeiN7iZqL4NrvPERbzWNmm91olQIDA%2BgJC4vrmWixIIBeoZFmxV5dcwdyLqfRCCYs5Ejymn3msVLYEPWaY9iFAgEAnICR2DP7XmkDOP0xAdAVzazP%2F73gTFC1B%2F2vh%2FwQIELgmICRek9n6du0vJpCA2J1%2F2PMK5sP5COJfv%2F%2FyerEOqXgzgTnCoiXozaZPwwQILCwgJC4MrPqyBPKC3gXEnt3KsqSA2BOr4mIJi5nrMUOwBD1Grd19jJxATQJCYk2zpa%2BTBLqAOOQClcPhfcLDpEbtXI1A5nryEvTHb5%2FzOKtm0DpKgACBJwSExCdw3LUfgZx%2FmCM%2BfUd0%2FOkK5r57Kle7wKSweDrd5HEmKNb%2BKNB%2FAgQiICRGwbZbgZx%2FmIA45AKVLiC%2BffVltygG1ksgYdESdC8qhQjUK6DnTwoIiU%2FyuLNmgQTE7vzD89GdXuP4foHKJwGxF1cLhRIUZ1mC%2FvPvmxa8jJEAgX0JCIn7mk%2Bj%2BS6Q5b4uIH7%2F%2BbkvOWLkApXnlIq6f9XOTAqL5z9S8ljMY3LVTmuMAAECEwWExImAdi9PIC%2FGOS%2Bsb88SEBMC%2BpZXrl2BPE7yeBkjkMekN%2BIeI2cfAgS2Elg%2FJG41Uu02IZDzD%2FNi3Hew3fmHb17%2B0be8cgQSFKcuQecPmZwOQZMAAQIlCwiJJc%2BOvvUWyAtuAqILVHqTKThRYEpYzB8ye1uCnshpdwIEChQQEgucFF0aJpCjMnnB7RsQs1yY8w9doDLMWenLAgmLeUxdvvfpWxMWLUE%2FbYGU1VwAABAASURBVOReAgS2ExASt7MvpOW6u9EFRG%2BQXfck7qD3CYqWoHcwkYZAgMAPAkLiDxx%2BqEkgy8s5EtO3zznakxfzvuWVIzBUII%2BvsWExj%2BUcEc8fPkPbVZ7ATwJuIDCDgJA4A6Iq1hXozj%2F88PXUd3n5cDx%2BcYHKunPUemsJi8fD4f0Yh4RFS9Bj5OxDgMDcAkLi3KLqW1QgR1lytKV3I%2BeAWNn5h72HpmDZAgmKY48qZmQJi3m853sbAQIEthAQErdQ1%2BYogbxg5oWz7845kpOA2Le8cgSWEJgSFvN4d1RxiVlRJ4G1BepsT0isc96a6nW3vPzx2%2Be8YPYduOXlvlLKrSWQsJg%2FXMa0l8e%2BsDhGzj4ECEwREBKn6Nl3cYEExG55%2BXS66dXYeXm5C4g%2Bf7kXl0LPC8xZIkHREvScouoiQGBJASFxSV11TxLolpdfvPjct5Icpcnysvc%2F7Cum3FYCU8Li6XB456jiVjOnXQJtCew4JLY1kXsabY4eenubPc2osVwTSFjMHzfX7n%2FqdmHxKR33ESAwh4CQOIeiOmYTSEActbzs85dnmwMVrSuQoGgJeoC5ogQIrCYgJK5GraHnBIYuLx%2BOxy%2BWl59TdX8tAlPCoqOKtcyyfhKoS0BIrGu%2Bau7t1b7n6OGY5eUExKuVuoNApQIJi5agK5083SawMwEhcWcTWttw7o8e9r16%2BTzA7uply8tnCf%2F2KpCgaAl6r7O7t3EZz54FhMQ9z27hY%2BsC4uHwrnc3s7z85uXR1cu9xRSsXGBKWLQEXfnk6z6BAgSExAImobUuWF4uY8b1oh6BhMVJS9Afv33OH2X1jFhPCRAoQUBILGEWGupDXqhcvdzQhBvqbAIJiqOXoE%2BnmxxZzO%2FfbB1SEQECJQrM2ichcVZOlV0TGHP00NXL1zTd3rLAlLCYoOiNuFt%2B9Bg7gWECQuIwL6VHCOToxaCjh%2Bc2srTm6uUzhH%2FtCAwcacJifk8G7tYV78KiJejOwv8IELguICRet3HPDAJD39omRw9dvTwDvCqaEEhQtATdxFQbJIFNBITE6exquCDQLS9%2F%2BHo6nE43F%2B6%2BeFOOiuTooauXL%2FK4kcBVgSlh8XQ4vLMEfZXWHQSaFhASm57%2BZQbfHT188eLzkNodPRyipSyBywIJi%2Flj6%2FK9T9%2FahcUsQf%2F5d%2B8%2F7J6usfZ79Z8AASHRY2A2ge7o4flFZsjRw%2Fvl5bevvszWERURaFggQXHSEvT5D7ycR9wwoaETIPBdQEj8DuHLNIG8qIy9OGXu5eVpI7E3gX0ITAmL3VHFD19P%2Bb3eh4ZRECAwRkBIHKNmn3uBu6OHeVG5v%2FG5b47HL5aXn0NyP4F5BBIWj4fD%2BzG15fc6QTG%2F52P2tw%2BBGQVUtYGAkLgB%2Bl6avD%2F30MUpe5lS49ipQILi2CXoBMWsEiQs7pTHsAgQuCIgJF6BcfN1gRxVyNWQo849fPPyj%2Bs1u2eXAgZVjMDUsJjfe2GxmOnUEQKLCwiJixPvp4EuHH789jlHFYaMKktd3tpmiJiyBJYVSFjM7%2BWYVnJkMUExzwdj9rcPAQL1CDwVEusZhZ4uLpAXhS4cDlhaPjj3cPF50QCBsQIJipagx%2BrZj0AbAkJiG%2FM8epQ5WtCde3g4vBtSSY5SOHo4RExZAmsJ%2FNjO1LBoCfpHTz8R2JOAkLin2Zx5LF04fPHis3MPZ4ZVHYECBRIW88fdmK7dLUGP2dc%2BBAiUKyAkljs3P%2FVsrRuytJyjA4PC4blzeYFx9PAM4R%2BBSgUSFKcsQed5I88flQ5ftwkQeCQgJD4CafnHsUvLzj1s%2BVFj7HsUEBZXnVWNEShWQEgsdmrW69h9OBy5tOzo4XpzpSUCawokLGaFYEyblqDHqNmHQFkCQmJZ87F6b0add3juZV44mg%2BHZwf%2FCOxdIEHREvTeZ9n4CFwWEBIvu%2Bz%2B1pw3lPOHhp53aGl59w8NAyRwUUBYvMjixh0KGNJ%2FAkLifxZNfHcXDrMUNHTAjh4OFVOewP4EEhbzXDBmZHneyXPQmH3tQ4DA%2BgJC4vrmm7SYJ%2BYcOcyT9NAO5AUhy015cRi6r%2FIE1hPQ0loCeS7Ic0KeG4a2meegPBflOWnovsoTILCugJC4rvfqreWJOE%2FIeWIe3LhPTBlMZgcCLQkIiy3NtrG2KFBESGwRfukxzxEOXZiy9Cypn8A%2BBBIWxxxVzOjzB2yer%2FK9jQCBsgSExLLmY1Jv7t7KZuqRQ%2BFw0jTYmUCTAgmKj5agezskKOZ5S1jsTaYggVUEhMRVmJdt5C4cnoa%2Bz%2BGDbuUogHD4AMS3BAiMEhAWR7HZiUCRAkJikdPSr1OzhcM3L495Yr9v1TcECBCYKJDnlPzxOaaaHFl0VHGMnH0IzCsgJM7ruXhtd8EwSzOTjxwKh4vPlwYItCyQoGgJupxHgJ4QGCogJA4V26D8fTD8%2BO3zlGCYrucv%2Bzxp58k7P9sIECCwtECeb%2FK8k%2BefoW3lqGL%2BKHZkcaic8gSmCwiJ0w0XqeFiMDydbsY2lifnPEnnyXpsHfbbSkC7BPYhkOefPBeNGc3pcHgnKI6Rsw%2BB8QJC4ni72fecOxjefYSecDj7VKmQAIGRAgmKeU4aExYTFB1VHAlvt%2FIEKuiRkLjhJCUUZvv1vIycJ777peQJRwy74Xx%2FE2xXK3ca%2FkeAQIECwmKBk6JLBB4JCImPQJb8MYEwWxcKz8EwoTDbYWoovOu0cHgn4SuBJQXUPaNAwuKYo4rpQo4sWoKOhI3AMgJC4gKuCYJ3210gvDtSeB8K5w6Gb14eHTlcYDJVSYDA4gIJipagF2fWAIHBAm2FxAE8CXn3Ae981O%2FJ7z98PSUE3m0Jgndbd5RwrkB41%2F8cMTwc3h9vb18LhncovhIgULuAsFj7DOr%2F3gSExAszmuWLhLz7gJeQ99R2oY7ZbzoHw8N5uw%2BGb17%2B8entqy%2Bzt6NCAgQIbCyQsNgtQZ%2Bf8%2Fp05WEZS9APNXxPYJqAkHjBL08yF25e%2F6Y8QZ63u2DoqOH6U6BFAgS2EUhQzHNeFxYHdiHP4VnZyR%2F8A3dVnACBBwJC4gOMfLv5k8r3UNhGMIy4jQABAtcFurD45uVRWLxu5B4CSwkIiUvJ9q33HArvl5HPT4T5yznLyNn6VqEcAQIE9i6QsNgFxTxnDhxsjixufgBgYJ%2BrLq7zuxEQEteeyjzBnbccKcyWUJhNKFx7IrRHgEBtAgmKeb7swuLAzicoWoIeiKZ48wJC4uOHwO3tvBeDnAPh4yOFeZJLKMz2uHk%2FE9hQQNMEqhDowuJ55UVYrGK6dLJiASHx0eQluI154kkQzJZ9c4QwW973K4EwW%2Bp91JQfCRAgQGCCQMJi95x7OLwfWk2OLFqCHqqmfJ0C43stJF6w%2B%2BGJ5%2FuRwMP3r3dPSAmBd9sPYfD7W9MIhRdg3USAAIGZBfJ8nS3PzUOrTlC0BD1UTfmWBITEK7OdJ51sOQr4cMtt3fb21ZcEwWxXqnAzAQIEJgnYub9AnpfzB7uw2N9MSQLPCQiJzwm5nwABAgSqEUhY7FZ5LEFXM2c6Wq6AkLjI3KiUAAECBLYSyApPFxZHBkVL0FvNnHZLExASS5sR%2FSFAgACBWQQSFGddgp6lVyohUI%2BAkFjPXOkpAQIECIwQmBoWXQU9At0uuxAQEncxjQbxjIC7CRAgcEhYdGGLBwKB%2FgJCYn8rJQkQIECgcoEERUvQlU%2Fiffd9s7SAkLi0sPoJECBAoDiBqWExS9C%2F%2Ffn3TXED0yECMwoIiTNiqooAgX4CShEoRSBhcewS9OnFi88Ji6WMRT8IzC0gJM4tqj4CBAgQqEogQdESdFVTprMrCQwMiSv1SjMECBAgQGBlgalhMUcVs63cbc0RWExASFyMVsUECBCoREA3fxBIWOyWoI%2FHLz%2Fc8cwPp8PhXTZB8Rkod1cjICRWM1U6SoAAAQJrCSQo%2FvX7L6%2BPh8P7oW0mKPrUlqFqypcoICSWOCv9%2B6QkAQIECCwo0IXFNy%2BPo8Pix28ubllwflS9rICQuKyv2gkQIEBgBwIJi8fb2%2BFHFk%2BnmxxZHLYEvQMwQ9iFgJC4i2k0CAIECBBYWuDT21dfurBoCXppavUXIiAkFjIRurEPAaMgQGD%2FAgmK3jJn%2F%2FNshIeDkOhRQIAAAQIERghMDYuWoEegb7NLs60Kic1OvYETIECAwBwCCYtHS9BzUKqjMAEhsbAJ0R0CBGYUUBWBlQQSFC1Br4StmdUEhMTVqDVEgAABAnsXmBoWswSdbe9OxleHQKkhsQ49vSRAgAABAhcEEha7JWif2nJBx021CAiJtcyUfhIgQKB6gbYGkKDoU1vamvO9jVZI3NuMGg8BAgQIFCXQhcUpn9ry4evJEnRRU9pMZ4TEZqZ62kDtTYAAAQLTBKaGRUFxmr%2B9hwsIicPN7EGAAAECBEYLJCx25ysOrCEf7%2FfrvEcVB%2FZA8dYEhMTWZtx4CRAgQGBzgQRFb5mz%2BTTowDMCQuIzQO4mUKSAThEgsAuByWHx47fPlqF38VAochBCYpHTolMECBAg0JJAwmKWoLMNGvfpdJNlaEFxkFqxhUvrmJBY2ozoDwECBAg0KZCgmG1wUDxrJSg6X%2FEM4d%2BsAkLirJwqI0CgTQGjJjCfQIKi8xXn81TTeAEhcbydPQkQIECAwGICU8NilqCzLdZBFe9eoPmQuPsZNkACBAgQqFogYbFbgvYRf1XPY42dFxJrnDV9JkCAAIGnBHZ3X4Kij%2Fjb3bQWPyAhsfgp0kECBAgQIPCvQBcWfcTfvxj%2Bv7iAkLg4sQYGCShMgAABAs8KTA2LOVcx27MNKdC0gJDY9PQbPAECBAjULJCwWMP5ijUbt9x3IbHl2Td2AgQIEKheIEHR%2BYrVT2ORAxASi5wWnSJQioB%2BECBQi0AXFp2vWMt0VdFPIbGKadJJAgQIECDQT0BY7OfUdKmegxcSe0IpRoAAAQIEahJIWBxzvmLGmI%2F5y4Utv%2F35901%2BtrUpICS2Oe9GTYBAnQJ6TWCQQILilPMVTy9efE5YHNSowrsREBJ3M5UGQoAAAQIELgt0YdH5ipdx3HpVQEi8SjPzHaojQIAAAQIbCwiLG09AZc0LiZVNmO4SIECAQDkCtfYkYfF4e%2Fu6O2dx4CByvuKvH76eLEMPhKuwuJBY4aTpMgECBAgQmCrw6e2rL11YPBzej6krYTFBMduY%2Fe1TvoCQWP4c6eEiAiolQIAAgQgkKP414XzFu7CYumz7EhAS9zWfRkOAAAECBEYJTA2LRSxBjxq5na4JCInXZNxOgAABAgQaFBAWG5z0K0MWEq%2FAuJkAgVUFNEaAQGECwmJhE7JBd4TEDdA1SYAAAQIEahFIWMxV0NmG9jnnK1qGHqpWTvnpIbGcsegJAQIECBAgsIBAgmK2MUEx3REWo1DfJiTWN2d6TIAAgcUFNEDgkkCC4tgroVOfsBiFejYhsZ650lMCBAgQIFCEgLBYxDSeUdKUAAAGiUlEQVQs3gkhcXHitRvQHgECBAgQWEdAWFzHeatWhMSt5LVLgAABAgT6ChReTlgsfIJGdk9IHAlnNwIECBAgQOBHAWHxR4%2FafxISa59B%2FS9dQP8IECDQnICwuI8pFxL3MY9GQYAAAQIEihPYb1gsjnqRDgmJi7CqlAABAgQIELgTEBbvJOr6KiTWNV96S4DARAG7EyCwnYCwuJ39mJaFxDFq9iFAgAABAgRGC8wZFn%2F78%2B%2Bb0R2x45MCFYXEJ8fhTgIECBAgQKAygTnC4unFi8%2B%2Fffj6R7bKhl98d4XE4qdIBwkQILBjAUMjcBaYJSweDu9%2B%2FfD1JCyeQWf6JyTOBKkaAgQIECBAYJrA1LCY1h9%2BPvTQwJil62y%2Ffvz2OYEzW%2BrIbam7tU1IbG3G5xuvmggQIECAwCICc4XFx4HxcdjLz912Xq5OMMzSdbbD6XR%2FnuPpfIQyt6XcIoMtuFIhseDJ0TUCBAgQILCuQFmtzREWM6Iu6H0Pezk6eLcl%2FHXb%2Bb6HwTD7PN5O%2F%2Fvfu8e37f1nIXHvM2x8BAgQIECgcoGHYfF4OLzfZDjno4utHU0UEjd5pGmUwPwCaiRAgMDeBRIWsx1vb19vFhb3jvxgfELiAwzfEiBAgAABAuULfHr76kvC4l9vXh7XDItpd2WdTZsTEjfl1zgBAgQIECAwReBhWFwyMC5Z95TxL7mvkLikrroJEGhXwMgJEFhVIGEx2%2F3RxePxy1wdOB4O71P3XPXVUo%2BQWMtM6ScBAgQIECDQSyCB7q%2Fff3l9FxgT8nrtmEIJl%2Bct%2Bxxz7uN5S325q7VNSPx5xt1CgAABAgQI7EQgAS9bAmO2u%2BD38Gtuv99%2BP4fL85Z9cg5itp1QDB6GkDiYzA4ECBAgUJ%2BAHhP4VyCh7%2FH27z3%2B%2F1hASHws4mcCBAgQIECAAIGDkOhBULyADhIgQIAAAQLrCwiJ65trkQABAgQItC5g%2FBUICIkVTJIuEiBAgAABAgTWFhAS1xbXHoHaBfSfAAECBJoQEBKbmGaDJECAAAECBAhcF7h0j5B4ScVtBAgQIECAAIHGBYTExh8Ahk%2BAQO0C%2Bk%2BAAIFlBITEZVzVSoAAAQIECBCoWkBI3HD6NE2AAAECBAgQKFVASCx1ZvSLAAECBGoU0GcCuxEQEnczlQZCgAABAgQIEJhPQEicz1JNtQvoPwECBAgQIHAvICTeU%2FiGAAECBAgQ2JuA8YwXEBLH29mTAAECBAgQILBbASFxt1NrYARqF9B%2FAgQIENhSQEjcUl%2FbBAgQIECAAIFCBRYJiYWOVbcIECBAgAABAgR6CgiJPaEUI0CAQOMChk%2BAQGMCQmJjE264BAgQIECAAIE%2BAkJiH6Xay%2Bg%2FAQIECBAgQGCggJA4EExxAgQIECBQgoA%2BEFhaQEhcWlj9BAgQIECAAIEKBYTECidNl2sX0H8CBAgQIFC%2BgJBY%2FhzpIQECBAgQIFC6wA77JyTucFINiQABAgQIECAwVUBInCpofwIEahfQfwIECBC4ICAkXkBxEwECBAgQIECgdYG6Q2Lrs2f8BAgQIECAAIGFBITEhWBVS4AAAQLjBOxFgEAZAkJiGfOgFwQIECBAgACBogSExKKmo%2FbO6D8BAgQIECCwFwEhcS8zaRwECBAgQGAJAXU2KyAkNjv1Bk6AAAECBAgQuC4gJF63cQ%2BB2gX0nwABAgQIjBYQEkfT2ZEAAQIECBAgsLbAeu0JietZa4kAAQIECBAgUI2AkFjNVOkoAQK1C%2Bg%2FAQIEahIQEmuaLX0lQIAAAQIECKwkICT2glaIAAECBAgQINCWgJDY1nwbLQECBAjcCfhKgMCTAkLikzzuJECAAAECBAi0KSAktjnvtY9a%2FwkQIECAAIGFBYTEhYFVT4AAAQIECPQRUKY0ASGxtBnRHwIECBAgQIBAAQJCYgGToAsEahfQfwIECBDYn4CQuL85NSICBAgQIECAwFSBg5A4mVAFBAgQIECAAIH9CQiJ%2B5tTIyJAoHUB4ydAgMAMAkLiDIiqIECAAAECBAjsTUBILGtG9YYAAQIECBAgUISAkFjENOgEAQIECOxXwMgI1CkgJNY5b3pNgAABAgQIEFhUQEhclFfltQvoPwECBAgQaFVASGx15o2bAAECBAi0KWDUPQWExJ5QihEgQIAAAQIEWhIQEluabWMlULuA%2FhMgQIDAagJC4mrUGiJAgAABAgQI1COwVkisR0RPCRAgQIAAAQIEDv8PAAD%2F%2F%2BwvNEoAAAAGSURBVAMAWHzIgXysM%2BcAAAAASUVORK5CYII%3D'%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(widget)%3A%0A%20%20%20%20widget%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
9105664c007b5dbaeb42082e5910c507